#include "uart.c"
#include "timer.c"
#include <regx52.h>

/**
 * 实现一个按键，每次点击按键点亮8个灯中随机数量，随机位置的灯
 * 保证至少有一个灯被点亮
 */

// 定义按钮，假设接在 P3^0
sbit BTN = P3 ^ 0; 

void main()
{
    unsigned char led_pattern = 0;
    unsigned char num_leds;
    unsigned char led_pos;
    unsigned int i;
    
    // 初始化串口和定时器，需确保 uart_init、timer0_init、delay_ms 实现正确
    uart_init(); 
    timer0_init(); 

    // 初始状态所有 LED 熄灭（共阳极，P2 输出高电平）
    P2 = 0xFF; 
    
    while(1)
    {
        if(BTN == 0)  // 检测到按键按下
        {
            delay_ms(20);   
            if(BTN == 0) 
            {
                led_pattern = 0; 
                // 生成 1~8 个随机数量 LED 点亮
                num_leds = (timer_rand() % 8) + 1; 
 
                for(i = 0; i < num_leds; i++)
                {
                    do {
                        // 生成 0~7 随机位置
                        led_pos = timer_rand() % 8; 
                    } while (led_pattern & (1 << led_pos)); 

                    led_pattern |= (1 << led_pos); 
                }

                P2 = ~led_pattern; 
                delay_ms(500); 
                P2 = 0xFF;   
                while(BTN == 0); 
                delay_ms(20);   
            }
        }
    }
}